package com.carrentalplatform.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.carrentalplatform.model.RentalOrder;

import java.time.LocalDateTime;
import java.util.List;

public interface RentalOrderService extends IService<RentalOrder> {
    /**
     * 创建租车订单
     * @param userId 用户ID
     * @param vehicleId 车辆ID
     * @param startShopId 取车车行ID
     * @param endShopId 还车车行ID
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 订单ID
     */
    Long createOrder(Long userId, Long vehicleId, Long startShopId, Long endShopId, 
                    LocalDateTime startTime, LocalDateTime endTime);
    
    /**
     * 完成订单
     * @param orderId 订单ID
     * @return 操作结果
     */
    boolean completeOrder(Long orderId);
    
    /**
     * 取消订单
     * @param orderId 订单ID
     * @return 操作结果
     */
    boolean cancelOrder(Long orderId);
    
    /**
     * 查询用户订单列表
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 订单分页列表
     */
    IPage<RentalOrder> getUserOrders(Long userId, int page, int size);
    
    /**
     * 查询车行订单列表
     * @param shopId 车行ID
     * @param page 页码
     * @param size 每页大小
     * @return 订单分页列表
     */
    IPage<RentalOrder> getShopOrders(Long shopId, int page, int size);
    
    /**
     * 获取所有订单
     * @return 订单列表
     */
    List<RentalOrder> getAllOrders();
    
    /**
     * 通过ID查找订单
     * @param id 订单ID
     * @return 订单信息
     */
    RentalOrder findById(Long id);
    
    /**
     * 更新订单状态
     * @param id 订单ID
     * @param status 状态
     * @return 更新结果
     */
    boolean updateOrderStatus(Long id, String status);
} 